home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 242 / Issue 242 - April 2008 - DPCS0408DVD.ISO / Software Money Savers / VirtualDub / Source / VirtualDub-1.7.7-src.7z / src / h / vd2 / plugin / vdplugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-02-28  |  3.8 KB  |  137 lines

  1. //    VirtualDub - Video processing and capture application
  2. //    Plugin headers
  3. //    Copyright (C) 1998-2007 Avery Lee, All Rights Reserved.
  4. //
  5. //    The plugin headers in the VirtualDub plugin SDK are licensed differently
  6. //    differently than VirtualDub and the Plugin SDK themselves.  This
  7. //    particular file is thus licensed as follows (the "zlib" license):
  8. //
  9. //    This software is provided 'as-is', without any express or implied
  10. //    warranty.  In no event will the authors be held liable for any
  11. //    damages arising from the use of this software.
  12. //
  13. //    Permission is granted to anyone to use this software for any purpose,
  14. //    including commercial applications, and to alter it and redistribute it
  15. //    freely, subject to the following restrictions:
  16. //
  17. //    1.    The origin of this software must not be misrepresented; you must
  18. //        not claim that you wrote the original software. If you use this
  19. //        software in a product, an acknowledgment in the product
  20. //        documentation would be appreciated but is not required.
  21. //    2.    Altered source versions must be plainly marked as such, and must
  22. //        not be misrepresented as being the original software.
  23. //    3.    This notice may not be removed or altered from any source
  24. //        distribution.
  25.  
  26. #ifndef f_VD2_PLUGIN_VDPLUGIN_H
  27. #define f_VD2_PLUGIN_VDPLUGIN_H
  28.  
  29. #include <stddef.h>
  30.  
  31. // Copied from <vd2/system/vdtypes.h>.  Must be in sync.
  32. #ifndef VD_STANDARD_TYPES_DECLARED
  33.     #if defined(_MSC_VER)
  34.         typedef signed __int64        sint64;
  35.         typedef unsigned __int64    uint64;
  36.     #elif defined(__GNUC__)
  37.         typedef signed long long    sint64;
  38.         typedef unsigned long long    uint64;
  39.     #endif
  40.     typedef signed int            sint32;
  41.     typedef unsigned int        uint32;
  42.     typedef signed short        sint16;
  43.     typedef unsigned short        uint16;
  44.     typedef signed char            sint8;
  45.     typedef unsigned char        uint8;
  46.  
  47.     typedef sint64                int64;
  48.     typedef sint32                int32;
  49.     typedef sint16                int16;
  50.     typedef sint8                int8;
  51. #endif
  52.  
  53. #ifndef VDXAPIENTRY
  54.     #define VDXAPIENTRY __stdcall
  55. #endif
  56.  
  57. #ifndef VDXAPIENTRYV
  58.     #define VDXAPIENTRYV __cdecl
  59. #endif
  60.  
  61. enum VDXCPUFeatureFlags {
  62.     kVDXCPUF_CPUID        = 0x00000001,
  63.     kVDXCPUF_MMX        = 0x00000004,
  64.     kVDXCPUF_ISSE        = 0x00000008,
  65.     kVDXCPUF_SSE        = 0x00000010,
  66.     kVDXCPUF_SSE2        = 0x00000020,
  67.     kVDXCPUF_3DNOW        = 0x00000040,
  68.     kVDXCPUF_3DNOW_EXT    = 0x00000080,
  69.     kVDXCPUF_SSE3        = 0x00000100,
  70.     kVDXCPUF_SSSE3        = 0x00000200
  71. };
  72.  
  73. enum {
  74.     kVDPlugin_APIVersion        = 10
  75. };
  76.  
  77.  
  78. enum {
  79.     kVDPluginType_Video,        // Updated video filter API is not yet complete.
  80.     kVDPluginType_Audio,
  81.     kVDPluginType_Input
  82. };
  83.  
  84. struct VDXPluginInfo {
  85.     uint32            mSize;                // size of this structure in bytes
  86.     const wchar_t    *mpName;
  87.     const wchar_t    *mpAuthor;
  88.     const wchar_t    *mpDescription;
  89.     uint32            mVersion;            // (major<<24) + (minor<<16) + build.  1.4.1000 would be 0x010403E8.
  90.     uint32            mType;
  91.     uint32            mFlags;
  92.     uint32            mAPIVersionRequired;
  93.     uint32            mAPIVersionUsed;
  94.     uint32            mTypeAPIVersionRequired;
  95.     uint32            mTypeAPIVersionUsed;
  96.     const void *    mpTypeSpecificInfo;
  97. };
  98.  
  99. typedef const VDXPluginInfo *const *(VDXAPIENTRY *tpVDXGetPluginInfo)();
  100.  
  101. typedef VDXPluginInfo VDPluginInfo;
  102. typedef tpVDXGetPluginInfo tpVDPluginInfo;
  103.  
  104. class IVDXPluginCallbacks {
  105. public:
  106.     virtual void * VDXAPIENTRY GetExtendedAPI(const char *pExtendedAPIName) = 0;
  107.     virtual void VDXAPIENTRYV SetError(const char *format, ...) = 0;
  108.     virtual void VDXAPIENTRY SetErrorOutOfMemory() = 0;
  109.     virtual uint32 VDXAPIENTRY GetCPUFeatureFlags() = 0;
  110. };
  111.  
  112. typedef IVDXPluginCallbacks IVDPluginCallbacks;
  113.  
  114. struct VDPluginConfigEntry {
  115.     enum Type {
  116.         kTypeInvalid    = 0,
  117.         kTypeU32        = 1,
  118.         kTypeS32,
  119.         kTypeU64,
  120.         kTypeS64,
  121.         kTypeDouble,
  122.         kTypeAStr,
  123.         kTypeWStr,
  124.         kTypeBlock
  125.     };
  126.  
  127.     const VDPluginConfigEntry *next;
  128.  
  129.     unsigned    idx;
  130.     uint32        type;
  131.     const wchar_t *name;
  132.     const wchar_t *label;
  133.     const wchar_t *desc;    
  134. };
  135.  
  136. #endif
  137.